class LiczbaException extends Exception {
    LiczbaException ( String w ) {
	super(w);
    }
};

public class Liczba {
    private int number;
    private static String cyfry[] = { "0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "A", "B", "C", "D", "E", "F" };
    
    Liczba(int n)
    {
    	number = n;
    }
    
    Liczba (String n, int podstawa) throws LiczbaException  {
    	if(podstawa == 0) throw new LiczbaException("nie ma czegos takiego, a przynamniej nie w podstawach od 2 do 16");
    	if(podstawa < 2 || podstawa > 16) 
			throw new LiczbaException("zla podstawa");
		
		int temp[] = new int[n.length()];
		for ( int x = 0 ; x < n.length() ; x++ ) {
			int y=0;
			while(y < 16 && n.charAt(x) != cyfry[y].charAt(0))
				y++;
			if(y==16 || y >= podstawa) throw new LiczbaException("zapis liczby o podanej podstawie jest niepoprawny");
			else
				temp[x] = y;
		}
		number = 0;
		for ( int x = 0, p = n.length()-1 ; x < n.length() ; x++, p-- ) {
			number += temp[x] * Math.pow (podstawa, p);
		}
    }
    
    public String zapis (int podstawa) throws LiczbaException {
    	if(podstawa < 2 || podstawa > 16) throw new LiczbaException("zla podstawa");
		int x = 0, reszta, liczba = number;
		String wynik = "", temp[] = new String[88];
		while ( liczba != 0 ) {
			reszta = liczba % podstawa;
			liczba = liczba / podstawa;
			temp[x] = cyfry[reszta];
			x++;
		}
		while ( x > 0 ) {
			x--;
			wynik = wynik + temp[x];
		}
		return wynik;
    }	
}
